关于java:乘以Bigdecimal和int生成错误 您所在的位置:网站首页 bigdecimal cannot 关于java:乘以Bigdecimal和int生成错误

关于java:乘以Bigdecimal和int生成错误

2023-04-13 17:48| 来源: 网络整理| 查看: 265

本问题已经有最佳答案,请猛点这里访问。

当我将其存储为Exponential格式时,我有一个像0.0004的值,它将转换为Exponential格式,所以我已经使用Bigdecimal将其转换为正常值,如下所述

1 Bigdecimal x=BigDecimal.valueOf(0.0004)

现在我试图乘以x*100,但是我得到的错误率低于。

1Error: The operator * is undefined for the argument type(s) BigDecimal, int

由于此错误,如果我再次使用不使用bigdecimal的它,它将转换为Exponential。

有人可以建议我乘以Bigdecimal and int的方法吗?

在Google上搜索了很多,但是找不到正确的解决方案。

感谢您的时间

相关讨论 您需要使用x.multiply(something) 您认为这是什么,C? Java不会重载*之类的运算符。它们仅适用于基元。您是否已检查BigDecimal javadoc? 当我使用multiply时,出现此错误The method multiply(BigDecimal) in the type BigDecimal is not applicable for the arguments (int) x.multiply(new BigDecimal(10)); 为什么不使用float或double? @Dawnkeeper谢谢您的回答..让我尝试加倍 @Dawnkeeper我无法将结果存储在Double ..给我错误Type mismatch: cannot convert from BigDecimal to Double 您正在尝试将real number存储到integer中。这行不通。您到底想用那些" 0.0004"做什么? @Dawnkeeper我的任务是.. converting bigdecimal to double and then adding with integer and finally storing the value in double variable。这是我的要求 好的。链接的重复项将完成简单转换的技巧。但是,如果需要使用BigDecimal的整个范围,则存在问题,因为BigDecimal具有任意精度。

您可以使用BigDecimal.multiply乘以BigDecimal。

但是,0.0004 * 100的int值将是0,这可能不是您想要的。

最后,您可以通过使用NumberFormat实例并格式化Number来更改小数位数表示BigDecimal的方式。

这里是一个例子:

12345678BigDecimal x= BigDecimal.valueOf(0.0004); BigDecimal y = x.multiply(new BigDecimal("100")); int z = y.intValue(); System.out.printf("y is %s\\tz is %d%n", y, z); // edit to truncate fractional digits NumberFormat nf = NumberFormat.getInstance(); nf.setMaximumFractionDigits(2); System.out.printf("y (2 fraction digits) is %s", nf.format(y));

输出

12y is 0.04000    z is 0 y (2 fraction digits) is 0.04 相关讨论 感谢您的回答..但是我需要输出为整数值0.04 ..我该如何实现? @Siva 0.04不是整数值。 0.04000在数学上等效于0.04。 对不起,我是java编程的新手...请建议我如何存储0.04并将其添加到Integer值并存储在另一个Integer中 @Siva不是关于编程,而是关于数学。无论如何,我已经编辑了答案,以包括您的0.04小数点被截断的表示形式。 您的方法有效,但是当我尝试使用Double.valueOf更改为double时返回了字符串值,然后我再次在输出为0.0004而不是0.04之间得到了指数值,请问您有什么建议。感谢您一直以来的支持 我设法在没有指导的情况下获得了所需的值,非常感谢。我遵循的流程First multiplied 0.0004 with bigdecimal of 100 then converted to string to get 0.04 then again changed to double @Siva没有问题,很高兴它为您服务

BigDecimal是对象。他们没有普通的运算符。

您需要在BigDecimal中调用方法multiply,而不是像x*10这样的普通乘法运算符:

1x = x.multiply(new BigDecimal(10));

如果要将其存储为新值:

1BigDecimal n = x.multiply(new BigDecimal(10));

并将其转换为原始语气:

12double d = n.doubleValue(); int i = n.intValue();

但是,如果您尝试使用小数,为什么不只使用双精度数:

12double x = 0.0004; double n = x*100;

相关讨论 谢谢您的回答..您能帮我把x加到整数并存储在另一个整数值中吗?我对java编程是完全陌生的。如果我问基本问题,我很抱歉 感谢您的回答,但double也会以Exponential格式存储值



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有